보안·인증 용어

인증과 인가, 토큰, mTLS, HMAC, 키 관리 등 보안 용어

  • 용어 16개

authentication / authorization (인증 / 인가)

인증은 “너는 누구인가”를 확인하는 것, 인가는 “그 사람이 이것을 해도 되는가”를 확인하는 것.

API key

미리 발급한 고정 키를 요청 헤더에 넣어 보내는 인증 방식.

OAuth2

비밀번호를 넘기지 않고 권한을 위임해 access token을 발급받는 인증·인가 표준.

access token / JWT

access token은 권한을 증명하는 짧은 수명의 토큰, JWT(JSON Web Token)는 서명이 들어 있어 서버가 DB 조회 없이 검증할 수 있는(self-contained) 토큰 형식.

mTLS (mutual TLS)

서버뿐 아니라 클라이언트도 인증서로 신원을 증명하는 TLS.

HMAC (Hash-based Message Authentication Code)

공유된 비밀키와 메시지를 함께 해시해서 서명을 만드는 방식.

  • 보내는 쪽: signature = HMAC-SHA256(secret, 본문 + timestamp)를 헤더에 실어 보낸다. 받는 쪽: 같은 secret으로 직접 계산해 비교한다.
  • 보장하는 것: 메시지가 중간에 바뀌지 않았다(무결성), secret을 아는 상대가 보냈다(인증). 암호화는 아니어서 본문은 그대로 보인다.
  • API key와 달리 secret이 네트워크에 실리지 않고 서명만 실린다. timestamp를 넣으면 재전송 공격(replay)도 막을 수 있다. 예) 웹훅 서명, AWS SigV4.
  • 학습 노트: 인증·인가 방식 비교 - API Key·OAuth2·JWT·HMAC·mTLS

replay attack (재전송 공격)

가로챈 정상 요청을 그대로 다시 보내 공격하는 것.

encryption / hashing / signature (암호화 / 해싱 / 서명)

암호화는 키로 복호화할 수 있게 숨기는 것, 해싱은 되돌릴 수 없는 고정 길이 값으로 바꾸는 것, 서명은 누가 보냈고 바뀌지 않았음을 증명하는 것.

symmetric / asymmetric encryption (대칭키 / 비대칭키)

대칭키는 암호화와 복호화에 같은 키 하나를 쓰는 방식, 비대칭키(공개키 암호)는 한 쌍의 서로 다른 키(공개키와 개인키)를 쓰는 방식.

  • 대칭키(예: AES)는 빠르지만 키를 상대에게 안전하게 전달해야 하는 문제가 있다. 비대칭키(예: RSA, ECDSA)는 느리지만 이 문제를 풀 수 있다.
  • 그래서 TLS는 비대칭키로 키를 교환·인증하고, 실제 데이터는 대칭키로 암호화한다.
  • 학습 노트: 인증·인가 방식 비교 - API Key·OAuth2·JWT·HMAC·mTLS

public key / private key (공개키 / 개인키)

공개키는 누구에게나 공개해도 되는 키, 개인키는 소유자만 비밀로 보관하는 키. 둘은 수학적으로 한 쌍이다.

  • 암호화(기밀성): 공개키로 암호화하면 짝인 개인키로만 복호화할 수 있다. 상대의 공개키로 보내면 상대만 열 수 있다.
  • 전자서명(인증, 무결성): 개인키로 서명하면 누구나 공개키로 검증할 수 있다. 서명한 사람이 개인키 소유자이고 내용이 바뀌지 않았음을 증명한다. 방향이 반대인 점이 헷갈리는 부분이다.
  • 개인키가 유출되면 신뢰가 무너진다. 공개키는 유출돼도 문제가 없다.
  • 예) SSH 키(내 PC의 개인키, 서버 authorized_keys에 공개키 등록), TLS 인증서(서버 공개키 + 신원을 인증기관이 서명), JWT의 RS256 서명.
  • 학습 노트: 인증·인가 방식 비교 - API Key·OAuth2·JWT·HMAC·mTLS · 파일 무결성 전자서명 검증 - RSA 개인키 서명과 공개키 검증(사이드카 방식) 정리

certificate (인증서)

공개키와 소유자 정보를 묶어 인증기관(CA)이 서명한 문서.

whitelist / allowlist

허용할 대상(IP, 경로, 호출자)만 목록으로 적어 두고 나머지는 막는 방식.

key rotation (키 교체)

암호화 키를 주기적으로 새 버전으로 바꾸는 것.

  • 키 저장소(AWS KMS, HashiCorp Vault, HSM)는 키를 안전하게 보관하는 곳이고, key rotation 라이브러리(예: Google Tink)는 애플리케이션이 여러 버전의 키를 다루는 로직을 맡는다.
  • 암호문 앞에 키 버전을 붙여 저장하고, 암호화는 항상 최신 키로, 복호화는 암호문에 적힌 버전의 키로 한다. 그래야 옛 키로 암호화한 데이터도 계속 읽힌다.
  • 그다음 옛 데이터를 새 키로 재암호화(migration)한 뒤 옛 키를 폐기한다.
  • 학습 노트: 인증·인가 방식 비교 - API Key·OAuth2·JWT·HMAC·mTLS

PII (개인정보) / 마스킹

개인을 식별할 수 있는 정보(이름, 연락처, 카드번호 등).

CAfile / CApath (OpenSSL의 CA 지정)

신뢰할 CA 인증서를 지정하는 두 방식. CAfile은 PEM 파일 하나(안에 여러 CA 가능), CApath는 디렉터리.

hostname verification (호스트명 검증)

서버 인증서의 이름(SAN, 없으면 CN)이 접속하려는 호스트명과 맞는지 확인하는 단계.